/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.model.SelectItem;

public class TipoProducto implements Serializable {
    private String codigoTipo;
    private String nombreTipo;
    private String estadoTipo;
    private Categoria objCategoria=new Categoria();
    private boolean retorno;

    public TipoProducto() {
    }

    public boolean isRetorno() {
        return retorno;
    }

    public void setRetorno(boolean retorno) {
        this.retorno = retorno;
    }

   

    public String getCodigoTipo() {
        return codigoTipo;
    }

    public void setCodigoTipo(String codigoTipo) {
        this.codigoTipo = codigoTipo;
    }

    public String getNombreTipo() {
        return nombreTipo;
    }

    public void setNombreTipo(String nombreTipo) {
        this.nombreTipo = nombreTipo;
    }

    public String getEstadoTipo() {
        return estadoTipo;
    }

    public void setEstadoTipo(String estadoTipo) {
        this.estadoTipo = estadoTipo;
    }

   public Categoria getObjCategoria() {
        return objCategoria;
    }

    public void setObjCategoria(Categoria objCategoria) {
        this.objCategoria = objCategoria;
    }
    
    
    //registrar
     public static boolean registrarTipoProducto (TipoProducto a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_registrarTipoProducto "
                     +"(?,?,?)} ");
             st.setString(1,a.getNombreTipo());
             st.setString(2,a.getObjCategoria().getCodigoCategoria());
             st.registerOutParameter(3,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(3));
             if(a.isRetorno()==true)
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    } 
     
     
     //listar tipo de producto
     public static ArrayList<TipoProducto> getListarTipoProducto(){
        ArrayList<TipoProducto> arreglo=null;
        TipoProducto obj=null;
        Connection conexion=null;
        ResultSet rs=null;
        
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall("{call sp_listarTipoProducto()}");
            rs=st.executeQuery();
            if(rs.next()){
                arreglo=new ArrayList<TipoProducto>();
                do{
                obj= new TipoProducto();
                obj.setCodigoTipo(rs.getString("codigoTipo"));
                obj.setNombreTipo(rs.getString("nombreTipo"));
                obj.setEstadoTipo(rs.getString("estadoTipo"));
                obj.getObjCategoria().setNombreCategoria(rs.getString("nombreCategoria"));       
                arreglo.add(obj);
                
                }while (rs.next());
            }
        rs.close();
        st.close();
        conexion.close();
             
         }
         catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
    
}
    return arreglo;
     }
     
     public ArrayList<SelectItem> getCargarComboTipoProducto(){         
    ArrayList<SelectItem> arrayNivel = new ArrayList<SelectItem>();
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall( "{call sp_listarTipoProducto()}");
    rs = st.executeQuery();        
    if (rs.next()){    
      do{
        arrayNivel.add(new SelectItem(rs.getString("codigoTipo"), 
                rs.getString("nombreTipo")));              
      } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      
    return arrayNivel;
    }
     /*
    //listar tipo de producto por nombre de categoria
     public static ArrayList<TipoProducto>
            getListarTipoProductoxCategoria(TipoProducto a){
        ArrayList<TipoProducto> arreglo=null;
        TipoProducto obj=null;
        Connection conexion=null;
        ResultSet rs=null;
        
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall("{call sp_listarTipoProductoxCategoria(?)}");
             st.setString(1,a.getObjCategoria().getNombreCategoria() );
            rs=st.executeQuery();
            if(rs.next()){
                arreglo=new ArrayList<TipoProducto>();
                do{
                obj= new TipoProducto();
                obj.setCodigoTipo(rs.getString("codigoTipo"));
                obj.setNombreTipo(rs.getString("nombreTipo"));
                obj.setEstadoTipo(rs.getString("estadoTipo"));
                obj.getObjCategoria().setNombreCategoria(rs.getString("nombreCategoria"));       
                arreglo.add(obj);
                
                }while (rs.next());
            }
        rs.close();
        st.close();
        conexion.close();
             
         }
         catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
    
}
    return arreglo;
     } */
}
